#pragma once

// #include <memory>
// #include <functional>

// 开发者能直接访问的
class TcpConnection;
class Buffer;
class Timestamp;

using TcpConnectionPtr = std::shared_ptr<TcpConnection>;

using ConnectionCallback = std::function<void(const TcpConnectionPtr &)>;
using ReadWriteCallback = std::function<void(const TcpConnectionPtr &, Buffer *, Timestamp)>;
using WriteCompleteCallback = std::function<void(const TcpConnectionPtr &)>;
using CloseCallback = std::function<void(const TcpConnectionPtr &)>;
using HighWaterMarkCallback = std::function<void(const TcpConnectionPtr &, size_t)>;